/**
 *Copyright(c) HNA SYSTEMS Co., LTD
 *
 *@date 2013-7-24
 * 	
 *Original Author: 郑兴(zhengxing)
 *
 *ChangeLog
 *
 */
package com.hnas.sys.service.system;

import java.util.List;

import com.hnas.core.dto.DTOPagedList;
import com.hnas.core.exception.EntityNotFoundException;
import com.hnas.sys.service.system.criteria.DTOSearchResource;
import com.hnas.sys.service.system.criteria.ResourceCriterial;
import com.hnas.sys.service.system.data.DTOBackMenu;
import com.hnas.sys.service.system.dto.DTOResource;
import com.hnas.sys.service.system.dto.DTOUser;

/**
 * @author 郑兴(zhengxing)
 *
 */
public interface ResourceService {
	/**
	 * <pre>保存资源</pre>
	 * @Auther 郑兴(zhengxing)
	 * @Date 2013-7-24
	 * @param resource
	 */
	public void saveOrUpdate(DTOResource resource, boolean excludeAuths) throws EntityNotFoundException;
	
	/**
	 * <pre>删除资源</pre>
	 * @Auther 郑兴(zhengxing)
	 * @Date 2013年7月26日
	 * @param id
	 */
	public void delete(Long id);
	
	/**
	 * <pre>加载资源</pre>
	 * @Auther 郑兴(zhengxing)
	 * @Date 2013年7月26日
	 * @param id
	 * @return
	 */
	public DTOResource load(Long id);
	
	/**
	 * <pre>加载所有资源</pre>
	 * @Auther 郑兴(zhengxing)
	 * @Date 2013年7月25日
	 * @return
	 */
	public List<DTOResource> loadAllResource();
	
	/**
	 * <pre>查询资源</pre>
	 * @Auther 郑兴(zhengxing)
	 * @param cirterial
	 * @return
	 */
	public List<DTOResource> queryResource(ResourceCriterial cirterial);
	
	List<DTOBackMenu> getUserMenus(DTOUser user) ;
	
	/**
	 * <pre></pre> 
	 *@auther 周勇（zhou-y）
	 * 2015-4-10
	 * @param con
	 * @return
	 */
	DTOPagedList<DTOResource> search(DTOSearchResource con);//
	
	/**
	 * <pre></pre> 
	 *@auther 周勇（zhou-y）
	 * 2015-4-10
	 * @param id
	 */
	void disable(long id);
	 /**
	 * <pre></pre> 
	 *@auther 周勇（zhou-y）
	 * 2015-4-13
	 * @param id
	 * @return
	 */
	DTOResource get(Long id) ;
	
	/**
	 * <pre></pre> 
	 *@auther 周勇（zhou-y）
	 * 2015-5-8
	 * @param userId
	 * @param resourceUrl
	 * @return
	 */
	boolean hasResource(long userId, String resourceUrl);
}
